AWS : Amazon RDS คืออะไร
สำหรับท่านที่อยากใช้งาน Database บนคลาวด์ AWS วันนี้เราจะมาแนะนำเครื่องมือ Database ตัวดังบนคลาวด์ AWS ที่ชื่อ Amazon RDS ค่ะ โดยบทความนี้แปลมาจากบล็อก AWS再入門ブログリレー Amazon RDS編 | DevelopersIO ของคุณ Hajime Oguri นะคะ
เนื้อหาของบทความนี้เหมาะสำหรับผู้เริ่มต้นศึกษาเรื่อง AWS หรือผู้ต้องการอัปเดตข้อมูลบริการ Amazon RDS
อธิบายคำศัพท์ / คำย่อในบทความ (คลิกเพื่อเปิดอ่านข้อมูลเพิ่มเติม)
1- AZ = Availability Zone โซนความพร้อมใช้งานของ AWS
(อ่านต่อได้ที่ AWS Region, Availability Zone และ Edge Location คืออะไร | DevelopersIO )
2- Instance = คำเรียกเครื่องเซิร์ฟเวอร์เสมือนของ AWS โดยรวมๆ และ ใช้เป็นคำนับเครื่องเซิร์ฟเวอร์เหล่านั้นได้ด้วย
3- DB = Database
4- DBMS = Database Management System หรือ ระบบการจัดการฐานข้อมูล
5- RDB = Relational Database หรือ ฐานข้อมูลเชิงสัมพันธ์
6- RDBMS = relational database management system หรือ ระบบจัดการฐานข้อมูลเชิงสัมพันธ์
7- OpenSource = software ที่เปิดเผย source code ของโปรแกรม ทำให้สามารถแก้ไข ดัดแปลง เผยแพร่ต่อ source code ได้
8- web service = บริการเครื่องมือต่าง ๆ ที่ให้เข้าใช้งานได้ผ่านอินเตอร์เน็ต
9- Snapshot = คัดลอกข้อมูล ณ ช่วงเวลาหนึ่งๆ เก็บเป็นสำเนาเอาไว้
10- Fail over system = การเตรียมเซิร์ฟเวอร์ (หรือในบทความนี้คือฐานข้อมูล RDS) ไว้อย่างน้อย 2 เครื่อง เมื่อเกิดเหตุขัดข้องที่เครื่องหนึ่ง อีกเครื่องหนึ่งจะทำงานแทนทันที วิธีการนี้จะทำให้ไม่เกิด Down Time หรือช่วงเวลาที่ใช้งานไม่ได้ ลักษณะการเทการทำงานจากเครื่องหลักไปเครื่องรองนี้เรียกว่า Fail over
11- Read replicas คือ DB แบบอ่านอย่างเดียว ซึ่งเป็น DB แบบจำลองที่สร้างขึ้นจากฐานข้อมูลหลักโดยฟังก์ชันการจำลองแบบ เนื่องจากเป็นแบบอ่านอย่างเดียว จึงไม่เขียนไปยัง DB หรือสะท้อนใน DB หลัก แต่สามารถสร้าง DB แบบจำลองการอ่านได้หลายชุด
—————————( ̄︶ ̄)↗ —————————
สารบัญ
- Relational Database หรือ ฐานข้อมูลเชิงสัมพันธ์ คืออะไร?
- RDBMS คืออะไร
- Amazon RDS คืออะไร
- จุดเด่นของ RDS
- Full managed
- ความพร้อมใช้งานสูง
- ปรับปรุงประสิทธิภาพการทำงาน
- Database engine ของ RDS
- Amazon Aurora
- รองรับ Storage Auto Scaling
- สรุป
Relational Database หรือ ฐานข้อมูลเชิงสัมพันธ์ คืออะไร?
ก่อนที่เราจะแนะนำ Amazon Relational Database Service(RDS) ขออธิบายสั้นๆ ก่อนว่า Relational Database คืออะไร
ฐานข้อมูลเชิงสัมพันธ์ (RDB) คือชุดของข้อมูลที่แสดงอยู่ในรูปตาราง ประกอบด้วย “แถว” และ “คอลัมน์”
RDB ก็คือโครงสร้างของตารางจำนวนมากเหล่านั้นนั่นเอง ซึ่งในแต่ละแถวของตารางข้อมูล จะมี Primary key (คีย์หลัก) เป็นตัวระบุค่าข้อมูลและ Primary key นี้จะมีค่าไม่ซ้ำกัน
RDB ใช้ Foreign key (คีย์นอก) เพื่อเชื่อมความสัมพันธ์ระหว่างตาราง
การสร้าง RDB และการสืบค้นทำได้โดยใช้ภาษา SQL
RDBMS คืออะไร
คือ ระบบสำหรับจัดการ Relational Database ที่พูดถึงเมื่อสักครู่ ชื่อเต็มคือ relational database management system: RDBMS
RDBMS แบบ Open source ที่เป็นที่รู้จักเช่น PostgreSQL, MySQL เป็นต้น ส่วน RDBMS เชิงพาณิชย์ที่เป็นที่รู้จัก เช่น Oracle Database, IBM DB2 และ Microsoft SQL Server
Amazon RDS คืออะไร
Amazon Relational Database Service (RDS) คือ Managed Relational Database Service ที่ AWS ให้บริการ
Amazon Relational Database Service (Amazon RDS) เป็นบริการ web service ที่ทำให้การตั้งค่า ดำเนินงาน ปรับขนาด Relational Database (ฐานข้อมูลเชิงสัมพันธ์) นั้นง่ายขึ้น ในAWS ทำให้คุณจัดการ ดูแล ฐานข้อมูลเชิงสัมพันธ์ที่เป็นมาตรฐานอุตสาหกรรม ได้คุ้มค่า มีประสิทธิภาพ
แปลจากภาษาอังกฤษ : What is Amazon Relational Database Service (Amazon RDS)? - Amazon Relational Database Service
จุดเด่นของ RDS
Full managed
ก่อนอื่นเลย เราจะมาดูการสร้างฐานข้อมูลภายใน On-premise เริ่มจากซื้อเซิร์ฟเวอร์ ตามด้วยติดตั้ง OS • DBMS รวมไปถึงงาน maintenance บำรุงระบบต่าง ๆ เช่น การสำรองข้อมูล DB, ตั้งค่าใช้งาน patch ใน DBMS หรือ OS เป็นระยะ ๆ เป็นต้น
ใน RDS การจัดการฐานข้อมูลดังกล่าวได้รับการจัดการด้วย Managed service ของ RDS (AWS จัดการให้แทน) ดังนั้นภาระงานของผู้ใช้ฐานข้อมูลจึงลดลง
นอกจากนี้ยังมีฟังก์ชันช่วยลดภาระงานอีกมาก ไม่ว่าจะเป็นการตั้งค่า Snapshot สำรองข้อมูลอัตโนมัติ การตรวจสอบการทำงานด้วย CloudWatch เป็นต้น
ความพร้อมใช้งานสูง
RDS สนับสนุนการทำ Fail over system ด้วยการทำ Multi- AZ (การใช้งานในหลาย AZ ของ AWS) เพื่อให้ DB instance พร้อมใช้งานเสมอ
Fail over system = การเตรียม instance (หรือในบทความนี้คือฐานข้อมูล RDS) ไว้อย่างน้อย 2 เครื่อง เมื่อเกิดเหตุขัดข้องที่หนึ่ง อีกเครื่องหนึ่งจะทำงานแทนทันที วิธีการนี้จะทำให้ไม่เกิด Down Time หรือช่วงเวลาที่ใช้งานไม่ได้ ลักษณะการเทการทำงานจากเครื่องหลักไปเครื่องรองนี้เรียกว่า Fail over
โดยจะมี DB instance อยู่ 2 เครื่อง คือ เครื่อง Master (เครื่องหลัก) และเครื่อง Slave (เครื่องรอง) เราจะวางเครื่องรอง ไว้คนละ AZ กับเครื่องหลักที่กำลังใช้งานอยู่
ซึ่งเครื่องหลักจะเชื่อมต่อและทำสำเนากันและกันแบบเรียลไทม์ (synchronous replication) เมื่อเครื่องหลักเกิดเสียหายขึ้นมา ก็จะสลับไปใช้งานเครื่องรองในทันทีโดยอัตโนมัติ
เราสามารถตั้งค่า Multi-AZ นี้ได้อย่างง่ายดายจาก Management Console (aka. แค่เข้าเว็บ AWS ก็ตั้งค่าได้แล้ว)
ปรับปรุงประสิทธิภาพการทำงาน
เราสามารถสร้าง DB Instance แบบอ่านอย่างเดียว ที่เรียกว่า Read Replica ได้
Read Replica คือ Database เพื่อรองรับคำขออ่านข้อมูลโดยเฉพาะ สามารถรองรับปริมาณคำขออ่านข้อมูล (workloads) มหาศาลได้ เป็นฐานข้อมูลที่ได้จากการทำสำเนา (replicate) ข้อมูลจากฐานข้อมูลหลัก (Master Database)
เนื่องจากเป็นฐานข้อมูลเพื่อการอ่านอย่างเดียว จึงไม่สามารถเขียนข้อมูลทับเข้าไปในฐานข้อมูลได้
อ้างอิง : データベースの負荷分散を実現する「リードレプリカ」 | ニフクラ
การจัดการคำขออ่านข้อมูล (Query) ด้วย Read replica ทำให้ Source DB Instance (เครื่องหลัก) ไม่ต้องทำงานหนัก และยังขยายขนาด (Scale out) เพื่อรองรับปริมาณการอ่านข้อมูลที่มากเป็นพิเศษได้
Database engine ของ RDS
เราสามารถเลือกใช้ Database Engine ที่ใช้อยู่ในปัจจุบันกับ On-premise เช่น MySQL, PostgreSQL, MariaDB, Oracle, SQL Server กับ RDS ได้เช่นเดียวกัน หรือจะใช้งาน Aurora ซึ่งเป็น engine ที่พัฒนามาเพื่อใช้ร่วมกับโครงสร้างคลาวด์ AWS เป็นพิเศษก็ได้
Database Engine คือ กลไกการทำงานของฐานข้อมูลนั้นๆ เป็นส่วนประกอบนึงของระบบจัดการฐานข้อมูล (DBMS) ที่ใช้เพื่อสร้าง อ่าน อัปเดต หรือ ลบ ข้อมูลในฐานข้อมูล
Amazon Aurora
Amazon Aurora (Aurora) เป็น Database Engine ของ Relational Database (ฐานข้อมูลเชิงสัมพันธ์) ที่สร้างโดย Amazon
ให้ปริมาณงานสูงถึง 5 เท่าเมื่อเทียบกับ MySQL มาตรฐานและมากถึง 3 เท่าเมื่อเทียบกับ PostgreSQL
Amazon Aurora ได้รับการออกแบบมาให้เข้ากันได้กับ MySQL และ PostgreSQL จึงสามารถเรียกใช้แอปพลิเคชันและเครื่องมือที่มีอยู่ได้โดยไม่ต้องปรับเปลี่ยนใด ๆ
อ้างอิง : Amazon Aurora MySQL PostgreSQL Features | Relational Database | AWS
ตามที่ได้กล่าวไปแล้วถึงเรื่องการทำ Multi-AZ ในหัวข้อความพร้อมใช้งาน แต่ Aurora จะทำสำเนาและจัดเก็บข้อมูลของคุณทั้งหมด 6 ชุด ไว้ใน 3 Availability Zone โดยอัตโนมัติ ในขณะที่ DB Engine ตัวอื่นจะใช้งานได้ 2 Availability Zone ดังนั้น Aurora จึงมีคุณสมบัติเรื่องความพร้อมใช้งานที่สูงกว่า
นอกจากนี้การทำ Read Replica ด้วย Aurora ยังช่วยเรื่องการปรับปรุงประสิทธิภาพการใช้งานได้ด้วย สำหรับ MySQL คุณสามารถสร้าง Read Replica ได้สูงสุด 5 รายการ แต่ Aurora สามารถสร้าง Read Replica ได้สูงสุด 15 รายการ และยังมีเวลาแฝง หรือ ดีเลย์ในหน่วยมิลลิวินาที ในขณะที่ MySQL จะมีค่าอยู่ในหน่วยวินาที
รองรับ Storage Auto Scaling
RDS Storage Auto Scaling จะคอยติดตามความจุปัจจุบันของคุณและขยายความจุของพื้นที่เก็บข้อมูลของคุณโดยอัตโนมัติ (โดยไม่หยุดทำงาน) เมื่อการใช้งานของคุณใกล้ถึงขีดจำกัด
Storage Auto Scaling ทำให้สามารถลดความจุที่ยังไม่ได้ใช้งานได้ง่าย ลดภาระงานในการปรับเปลี่ยนด้วยตนเอง และช่วยให้ใช้งานได้คุ้มค่ามากขึ้น
อ้างอิง : Amazon RDS now supports Storage Auto Scaling
สรุป
บทความนี้น่าจะให้ภาพคร่าว ๆ เกี่ยวกับ RDS ได้ สำหรับท่านที่อยากศึกษาเพิ่มเติม สามารถอ่านบล็อกของคลาสเมธอดเพิ่มเติมได้